/**
 * 邮件服务配置文件
 * 
 * 此文件包含 SMTP 邮件服务器配置和收件人列表配置
 * 支持多种邮件服务提供商，如 Gmail、QQ邮箱、163邮箱等
 * 所有配置项都支持通过环境变量进行覆盖
 * 
 * @author MySQL Backup Service
 * @version 1.0.0
 */

// 加载环境变量配置
require('dotenv').config();

/**
 * SMTP 邮件服务器配置对象
 * 
 * 包含连接 SMTP 服务器所需的所有参数
 * 支持 TLS/SSL 加密和身份验证
 */
const emailConfig = {
    // ========== SMTP 服务器配置 ==========
    
    /**
     * SMTP 服务器主机地址
     * 
     * 常用邮件服务商的 SMTP 地址：
     * - Gmail: smtp.gmail.com
     * - QQ邮箱: smtp.qq.com
     * - 163邮箱: smtp.163.com
     * - Outlook: smtp-mail.outlook.com
     * 
     * @type {string}
     * @default 'smtp.gmail.com'
     * @env EMAIL_HOST
     */
    host: process.env.EMAIL_HOST || 'smtp.gmail.com',
    
    /**
     * SMTP 服务器端口号
     * 
     * 常用端口说明：
     * - 25: 标准 SMTP 端口（通常被 ISP 阻止）
     * - 587: STARTTLS 端口（推荐用于提交邮件）
     * - 465: SSL/TLS 端口（传统安全端口）
     * - 2525: 备用端口（某些服务商使用）
     * 
     * @type {number}
     * @default 587
     * @env EMAIL_PORT
     */
    port: parseInt(process.env.EMAIL_PORT) || 587,
    
    /**
     * 是否使用 SSL/TLS 安全连接
     * 
     * 安全连接选项：
     * - true: 使用 SSL/TLS（通常用于 465 端口）
     * - false: 使用 STARTTLS 或明文连接（通常用于 587 端口）
     * 
     * 注意：大多数现代邮件服务器都要求使用加密连接
     * 
     * @type {boolean}
     * @default false
     * @env EMAIL_SECURE
     */
    secure: process.env.EMAIL_SECURE === 'true',
    
    /**
     * SMTP 身份验证配置
     * 包含用户名和密码信息
     * 
     * @type {Object}
     */
    auth: {
        /**
         * 发件人邮箱地址
         * 
         * 注意事项：
         * - 必须是有效的邮箱地址
         * - 需要在对应邮件服务商开启 SMTP 服务
         * - Gmail 需要使用应用专用密码
         * 
         * @type {string}
         * @required
         * @env EMAIL_USER
         */
        user: process.env.EMAIL_USER,
        
        /**
         * 邮箱密码或应用专用密码
         * 
         * 安全建议：
         * - Gmail: 使用应用专用密码，不是账户密码
         * - QQ/163: 使用授权码，不是登录密码
         * - 企业邮箱: 通常使用登录密码
         * 
         * @type {string}
         * @required
         * @env EMAIL_PASS
         */
        pass: process.env.EMAIL_PASS
    },
    
    /**
     * TLS 安全配置
     * 用于配置 TLS/SSL 连接的安全选项
     * 
     * @type {Object}
     */
    tls: {
        /**
         * 是否拒绝未经授权的证书
         * 
         * 设置说明：
         * - true: 严格验证证书（生产环境推荐）
         * - false: 允许自签名证书（测试环境或内网）
         * 
         * 注意：在生产环境中建议设置为 true 以确保安全性
         * 
         * @type {boolean}
         * @default false
         */
        rejectUnauthorized: false
    }
};

/**
 * 邮件收件人列表处理
 * 
 * 从环境变量中读取收件人列表，支持多个邮箱地址
 * 格式：用逗号分隔的邮箱地址列表
 * 
 * 示例环境变量：
 * RECIPIENTS=admin@example.com,backup@example.com,monitor@example.com
 * 
 * @type {string[]}
 * @env RECIPIENTS
 */
const recipients = process.env.RECIPIENTS ? 
    process.env.RECIPIENTS.split(',').map(email => email.trim()) : 
    [];

/**
 * 导出邮件配置对象
 * 
 * 包含完整的 SMTP 配置和收件人列表
 * 这些配置将被邮件服务模块使用来发送备份通知
 * 
 * @exports {Object} emailConfig - SMTP 服务器配置对象
 * @exports {string[]} recipients - 收件人邮箱地址数组
 */
module.exports = {
    emailConfig,
    recipients
}; 